package com.youdoneed.user.authority;

import com.youdoneed.base.pagination.Page;
import com.youdoneed.base.pagination.Paging;
import com.youdoneed.user.model.Authority;

import java.util.List;

/**
 * 权限服务接口
 *
 * @author Ewing
 * @date 2017.2.8
 */

public interface AuthorityService {

    /**
     * 根据ID查找权限
     */
    Authority findAuthorityById(String id);

    /**
     * 添加权限
     *
     * @param authority 权限对象
     */
    Authority addAuthority(Authority authority);

    /**
     * 删除权限
     *
     * @param authorityId 权限ID
     */
    void deleteAuthority(String authorityId);

    /**
     * 修改权限
     *
     * @param authority 权限对象
     */
    Authority updateAuthority(Authority authority);

    /**
     * 获所有取父权限
     */
    List<Authority> getParentAuthority();

    /**
     * 获取所有子权限
     */
    List<Authority> getSubAuthority(String superId);

    /**
     * 根据名称和URL查询权限并分页。
     */
    Page<Authority> queryAuthorityPage(Paging param, String name, String description);

    /**
     * 获取所有权限的树形列表。
     */
    List<Authority> getAllAuthorityTree();
}
